我用C ++编写了这个程序,它读取包含这些数字的input.txt文件 7 18 五 15 131 11 13 287
程序向数组添加第一个值7,然后在接下来的七个数字中添加随机值(例如0,4659174,0,4778144等),然后打印7和18,然后再打印8个随机数,然后你可以看到打印7,18,5等,直到最后八个数字是input.txt文件中的实际数字。
如何让它只显示input.txt文件中的数字而不是所有这些随机值?到目前为止,这是我的代码:
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <stdlib.h>
using namespace std;
int main(){
int myArray[10];
int i = 0;
ifstream input("input.txt");
string number = "";
char next_letter = '\0';
while (input.get(next_letter)){
while (isdigit(next_letter) && !input.eof()){
number += next_letter;
input.get(next_letter);
}
int val = 0;
val = atoi(number.c_str());
myArray[i++] = val;
for(int i = 0; i < 8; i++)
{
cout << "array contents are: " << myArray[i] << endl;
}
number = "";
}
return 0;
}
答案 0 :(得分:0)
请考虑以下代码:
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <stdlib.h>
#include <cstdlib>
using namespace std;
int main(){
long myArray[10];
int i = 0;
ifstream input("input.txt");
string number = "";
const int MAX_LEN = 100;
char number_str[MAX_LEN];
while(input.getline(number_str, MAX_LEN - 1, ' ')){
char* end;
myArray[i++] = std::strtol(number_str, &end, 10);
}
cout << "array contents is: ";
for(int k = 0; k < i; k++)
{
cout << myArray[k] << " ";
}
cout << endl;
return 0;
}
getline
执行阅读,直到' '
转换由strtol
完成。请注意,默认情况下输入的数字为long int
。