如何将C++字符串转换为整数?

3
我需要将用户输入的9个字符串数字按顺序转换成整数。请参考以下链接:c++ converting string to int
string num;
int num_int, product[10];

cout << "enter numbers";
cin >> num;

for(int i =0; i<10; i++){
   product[i] = num[i] * 5; //I need the int value of num*5
}

6
这个问题以前已经被问过并得到回答了许多次。 - NPE
2
如果你想让用户输入一个数字,只需要让他们输入一个数字即可。 - Jerry Coffin
http://www.cplusplus.com/reference/cstdlib/atoi/ - Arpit
1
你确定要使用 num[i] 吗?这只会访问 num 中的单个字符。 - Barmar
5个回答

5
为什么不直接将文本转换为整数?
int num;
cin >> num;

这是一个非常好的答案,但我需要同时使用字符串和整数变量。 - user1082764
2
@user1082764 为什么?你为什么需要一个字符串? - James Kanze

4

你不需要两个变量。在C++中,通常会在输入流中直接转换,而无需将文本视为字符串。因此,您可以简单地编写:

int num;
std::vector< int > product( 10 );

std::cout << "enter number: ";
std::cin >> num;

...

请注意,我已经修正了您声明数组的方式。在C++中,通常不会使用int product [10];。即使语言允许这样做,您也几乎不会在同一行定义两个变量。

3

1
需要注意的是,std::to_string 是 C++11 的特性,并非所有编译器都支持。 - Caesar
@Caesar我们还要说多久才能停止呢? - 111111
1
直到平均的C++程序使用它。 - Caesar
@Caesar 直到每个流行操作系统上的免费编译器都支持大部分功能,这个问题现在已经或多或少得到解决。 - 111111

1
这是一个完整的示例:
//library you need to include
    #include <sstream>
    int main()
    {
        char* str = "1234";
        std::stringstream s_str( str );
        int i;
        s_str >> i;
    }

1
如果你一定要使用 std::string(可能是因为作业等其他原因),那么你可以使用 std::stringstream 对象将其从 std::string 转换为 int
std::stringstream strstream(num);
int iNum;
num >> iNum; //now iNum will have your integer

或者,您可以使用来自C的atoi函数来帮助您完成此操作。

std::string st = "12345";
int i = atoi(st.c_str()); // and now, i will have the number 12345

你的程序应该像这样:
vector<string> num;
string holder;
int num_int, product[10];

cout << "enter numbers";
for(int i = 0; i < 10; i++){
    cin >> holder;
    num.push_back(holder);
}
for(int i =0; i<10; i++){
   product[i] = atoi(num[i].c_str()) * 5; //I need the int value of num*5
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接