#include <QtCore/QCoreApplication>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstdio>
#include<cctype>
using namespace std;
void test()
{
int arr[10];
int size = 0;
int i = 0;
char str[] = "12 45 1666";
for(;;)
{
while(str[i]!='\0' && str[i]==' ')i++;
if(str[i]=='\0')return;
arr[size] = 0;
while(str[i]!='\0' && str[i]!=' ')
{
if(!isdigit(str[i]))
{
cout <<str[i]<<" - Not a number!"<<endl;
return;
}
arr[size]=arr[size]*10+(str[i]-48);
i++;
}
size++;
}
for(int k = 0;i<size;k++)
{
cout <<arr[k]<<endl;
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
test();
return a.exec();
}
在这里,我试图编写一个将数字和空格字符串转换为数字数组的程序,但是它有一个问题,它没有输出。什么可能导致这个问题。我是c ++的佼佼者,所以评论家是受欢迎的。
答案 0 :(得分:1)
return
保留当前函数。离开无限循环的唯一方法是离开整个函数,这意味着你总是跳过输出。请改用break
或为for(;;)
循环提供适当的条件。
虽然c ++已经提供std::stringstream
来做这件事。
#include <iostream>
#include <sstream>
#include <string>
int main()
{
std::stringstream stream("12 45 1666");
int result;
// Reads from the stream until it's exhausted or fails
while (stream >> result)
{
std::cout << result << '\n';
}
return 0;
}
答案 1 :(得分:0)
for(int k = 0;k<size;k++)
{
cout <<arr[k]<<endl;
}
问题在这里刚刚改变了#i;在&#39; k&#39;。