В моей книге прокомментировался комментарий о том, что люди вводят запятые в целые числа и испортили вашу программу, но она не уточняла. Это заставило меня задуматься, поэтому я попытался написать небольшой алгоритм, чтобы взять std :: string и удалить все нецелые символы. Этот код компилируется, но пропускает вывод. Почему нет ничего назначенного для новой строки? Если if (isdigit (fstring [i])) оценивается как истина адреса, указывающего на сохранение цифры?Удаление нецелых чисел из строки в C++
//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 (или число с плавающей точкой)?
или вместо этого используйте оператор + =. – Tom
Is .append() как .push_back() для векторов? Какие аргументы он принимает? Я хотел бы знать, почему работает мой код. – jkeys
К сожалению, это не учтено: строки не похожи на сырые массивы? Адрес 0 не равен первому блоку памяти? – jkeys