Có phương pháp nào chuyển đổi chuỗi thành int không dấu? _ultoa tồn tại nhưng không thể tìm thấy phiên bản vise verse ...cách chuyển đổi ascii thành unsigned int
Trả lời
std::strtoul()
là phiên bản. Và sau đó một lần nữa có những cái cũ như atoi()
.
Boost cung cấp lexical_cast.
#include <boost/lexical_cast.hpp>
[...]
unsigned int x = boost::lexical_cast<unsigned int>(strVal);
Ngoài ra, bạn có thể sử dụng một stringstream (mà về cơ bản là những gì lexical_cast nào dưới bìa):
#include <sstream>
[...]
std::stringstream s(strVal);
unsigned int x;
s >> x;
Và nếu bạn muốn giải thích không thập phân, hãy xem thêm: http://stackoverflow.com/questions/1070497/c-convert- hex-string-to-signed-integer – Martin
Tôi là người duy nhất yêu thích chèn luồng, nhưng ghét trích xuất luồng? Tôi muốn sử dụng các chức năng (chẳng hạn như tăng cường này, mặc dù phải trung thực tôi có lẽ vẫn sẽ sử dụng atoi mà không suy nghĩ) mỗi lần. – Steve314
Vâng, trích xuất luồng khá xấu, đặc biệt vì bạn không thể khởi tạo các hằng số với nó. Nó cũng khá mạnh mẽ hơn một chút, vì bạn có thể sử dụng các thao tác để thay đổi cơ sở của bạn, vv – Martin
Làm thế nào về int atoi (const char * str)?
string s("123");
unsigned u = (unsigned)atoi(s.c_str());
Đây không phải là một gợi ý tốt cả. Anh ấy được yêu cầu cụ thể về "unsigned int" và đề cập đến những thứ như "_ultoa". Các poster biết về atoi(), atol(), vv Các hàm này đều được ký và nhận biết ký hiệu, có thể xử lý tràn, vv Câu trả lời đúng là sử dụng các hàm như strtoul. – Armentage
sscanf sẽ làm những gì bạn muốn.
char* myString = "123"; // Declare a string (c-style)
unsigned int myNumber; // a number, where the answer will go.
sscanf(myString, "%u", &myNumber); // Parse the String into the Number
printf("The number I got was %u\n", myNumber); // Show the number, hopefully 123
Tôi ghét gia đình scanf ngay cả trong C. Nó không bao giờ làm những gì tôi muốn nó làm, và hầu hết thời gian nó gây ra một lỗi. OK nếu bạn biết rằng chuỗi khớp với yêu cầu của bạn - nếu bạn đã kiểm tra nó hoặc trích xuất nó với mã khác - nhưng trong trường hợp đó, tại sao không chỉ sử dụng atoi hay gì khác? Bất cứ ai sử dụng chức năng scanf-family - tốt, có một số tội mà không có hình phạt nào có thể quá khắc nghiệt ;-) – Steve314
Đó phải là "Bất kỳ ai sử dụng chức năng quét gia đình trong C++ - ..." – Steve314
Nó hoạt động nếu bạn đi qua _atoi64
unsigned dài l = _atoi64 (str);
- 1. JNI: chuyển đổi unsigned int thành jint
- 2. Java - Thay đổi int thành ascii
- 3. C - unsigned int để unsigned char mảng chuyển đổi
- 4. Cách chuyển đổi int * thành int
- 5. Làm thế nào để chuyển đổi một ASCII char thành giá trị int ASCII của nó?
- 6. Enum Class "không thể chuyển đổi sang unsigned int"
- 7. Chuyển đổi giá trị int thành unicode
- 8. Chuyển đổi chuỗi int unsigned trả về kết quả sai
- 9. Char để int chuyển đổi để có được ASCII
- 10. Cách chuyển đổi 'unsigned long' thành chuỗi trong java
- 11. Chuyển đổi byte ASCII [] thành chuỗi
- 12. ASCII char sang int chuyển đổi trong C
- 13. Cách chuyển đổi cột Nvarchar thành INT
- 14. Chuyển đổi từ 2 hoặc 4 byte thành chữ ký/unsigned ngắn/int
- 15. chuyển đổi int thành wstring
- 16. Chuyển đổi int thành booleans
- 17. iOS: Chuyển đổi id thành int
- 18. Chuyển đổi mã ascii thành int và ngược lại trong python (nhanh)
- 19. Java unsigned byte [2] để int?
- 20. Chuyển đổi từ chuỗi ASCII được mã hóa thành Hex thành ASCII thuần tuý?
- 21. Chuyển đổi NSString thành unsigned char * cho ứng dụng iphone
- 22. Chuyển mảng char thành unsigned char *
- 23. Chuyển đổi mảng int thành mảng char
- 24. Chuyển đổi int thành const wchar_t *
- 25. Chuyển đổi IEnumerable <int> thành int []
- 26. Python - Chuyển đổi Hex thành INT/CHAR
- 27. MySQL: Chuyển đổi INT thành DATETIME
- 28. Chuyển đổi hàng cv :: Mat thành int
- 29. Chuyển đổi [IO Int] thành IO [Int] trong Haskell?
- 30. Làm thế nào để chuyển đổi mảng int thành int?
atoi không hoạt động, phải không? Trong CRT Windows, nó sẽ trả về một lỗi (ERANGE) trong trường hợp tràn. – Cheeso
Cheeso, vâng, cho những gì tôi có thể nói bởi "i", đó là int ;-) –