我想知道什麼是最簡單的方法來將int轉換爲C++風格的字符串和從C++風格的字符串轉換爲int。從字符串轉換爲整數
編輯
非常感謝你。當將表單字符串轉換爲int時,如果我傳遞一個char字符串會怎麼樣? (例如:「abce」)。
感謝&問候,
像老鼠
我想知道什麼是最簡單的方法來將int轉換爲C++風格的字符串和從C++風格的字符串轉換爲int。從字符串轉換爲整數
編輯
非常感謝你。當將表單字符串轉換爲int時,如果我傳遞一個char字符串會怎麼樣? (例如:「abce」)。
感謝&問候,
像老鼠
這是將字符串轉換爲數字。
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
int convert_string_to_number(const std::string& st)
{
std::istringstream stringinfo(st);
int num = 0;
stringinfo >> num;
return num;
}
int main()
{
int number = 0;
std::string number_as_string("425");
number = convert_string_to_number(number_as_string);
std::cout << "The number is " << number << std::endl;
std::cout << "Number of digits are " << number_as_string.length() << std::endl;
}
與明智一樣,以下是將數字轉換爲字符串。
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
std::string convert_number_to_string(const int& number_to_convert)
{
std::ostringstream os;
os << number_to_convert;
return (os.str());
}
int main()
{
int number = 425;
std::string stringafterconversion;
stringafterconversion = convert_number_to_string(number);
std::cout << "After conversion " << stringafterconversion << std::endl;
std::cout << "Number of digits are " << stringafterconversion.length() << std::endl;
}
也許最簡單是使用operator<<
和operator>>
用stringstream
(你可以從string
初始化stringstream
,並使用流的.str()
成員檢索字符串
Boost有lexical_cast
,這使得這特別容易(t幾乎沒有效率的典範)。正常使用將類似int x = lexical_cast<int>(your_string);
但非常可讀的(和良好命名):-) PS:指lexical_cast的 – 2010-08-24 05:16:09
使用atoi
將字符串轉換爲int。使用stringstream
轉換另一種方式。
如果你想在訂單上的東西'atoi',至少使用'strtol',它至少可以表明出現錯誤的時間。 – 2010-08-24 02:05:42
您可以將「%x」說明符更改爲「%d」或sprintf支持的任何其他格式。確保適當地調整緩存大小「BUF」
int main(){
char buf[sizeof(int)*2 + 1];
int x = 0x12345678;
sprintf(buf, "%x", x);
string str(buf);
int y = atoi(str.c_str());
}
編輯2:
int main(){
char buf[sizeof(int)*2 + 1];
int x = 42;
sprintf(buf, "%x", x);
string str(buf);
//int y = atoi(str.c_str());
int y = static_cast<int>(strtol(str.c_str(), NULL, 16));
}
Ick ...'#include「stdafx.h」'?你需要其他三個,但你絕對可以不使用'stdafx.h'。哦,'main'應該返回一個整數。 – 2010-08-24 02:34:48
@D。 Shawley:C++實際上有一條規則,說'main'是一個特殊情況,可能會忽略'return 0;',從而產生與放在那裏一樣的效果。 – 2010-08-24 03:07:01
如果我調用這樣的第一個函數會發生什麼:'convert_string_to_number(「blah」)'?事實上,這會悄然失敗,並返回相同的結果,就像我調用'convert_string_to_number(「0」)'一樣。這是我的一個明確的'-1'。 – sbi 2010-08-24 08:17:17