在我的一本书中有一条关于人们将逗号输入整数并弄乱你的程序的评论,但它没有详细说明。这让我开始思考,所以我尝试编写一个小算法来获取 std::string 并删除所有非整数字符。此代码编译但跳过输出。为什么没有任何东西被分配给newstring?if(isdigit(fstring[i])) 是否将其指向的地址评估为真以保存数字?
//little algorithm to take the non-integers out of a string
//no idea on efficiency
#include <iostream>
#include <string>
int main()
{
std::cout << "Enter a number with non-integer characters: ";
std::string fstring;
getline(std::cin, fstring);
std::string newstring;
int i = 0, x = 0;
while (i != fstring.length())
{
if (isdigit(fstring[i]))
{
newstring[x] = fstring[i];
i++;
x++;
}
else
{
i++;
}
}
std::cout << std::endl;
std::cout << newstring;
system("PAUSE");
}
第二个问题,可能属于其他地方:如何将字符串转换为 int(或浮点数)?