用于打印行数和整数值的代码

时间:2015-11-01 01:00:09

标签: c++ file

我创建了一个名为program.txt的数据文件。我需要创建代码,打印出来自该program.txt的行数和整数值 这是我制作的文字

int main(int argc, const char * argv[]) {
struct data *input;
readfile(&j, input);
printf("%f\n",input[0].percent_change);
}

program.text中包含这些值

 1

 35
 45
 87

 9 

 100

在cerr之后我尝试退出(1)并且说没有定义退出。 我是新手,任何帮助将不胜感激。谢谢这是C ++ btw。

2 个答案:

答案 0 :(得分:0)

问题是您使用的是ifstream,它代表INPUT文件流。您想使用ofstream,即OUTPUT文件流。您无法写入输入文件流,因此<<运算符未定义。

此外,您可以在exit(1)函数内return 1;,而不是在错误后使用main。这将终止程序,返回1作为退出代码。

如果您真的想使用退出,则需要#include <cstdlib>

答案 1 :(得分:0)

您定义的输入和预期输出没有明确定义,所以我不确定您要做什么。但是,这是一个大致的想法:

将文件名放在fstream的构造函数中会自动尝试打开文件进行读/写。你不需要再打电话给.open()了。另外,如果你不知道自己在做什么,你不应该同时读写同一个文件。

std::ifstream myInputFile("program.txt");
std::ofstream myOutputFile("programOut.txt");

不要检查myInputFile.fail(),只需使用重载的布尔运算符。深入解释:ifstream::is_open vs ifstream::fail?

if (!myInputFile) {
    //Something went wrong
    std::cerr << "Failed to open input file" << std::endl;
    return 1;
}

定义你的std :: string以在读取行时保存行,读取所有输入文件并计算行数。

std::string line;
int lineCount = 0;
while (getline(myInputFile,line)) {
    ++lineCount;
    //Do something with 'line'
}

也许您需要存储输入文件中的行,以便输出输出文件开头的行数,您可能需要#include <vector>并执行以下操作:< / p>

std::string line;
std::vector<std::string> linesFromFile;

//Read in all lines of the input file and store them in the vector
while (getline(myInputFile, line)) {
    linesFromFile.emplace_back(line);
}

//All lines read, good time to close input file
myInputFile.close();

//Print number of lines read
myOutputFile << linesFromFile.size() << std::endl;

//Loop through lines and print them
for (auto &lineFromFile : linesFromFile) {
    myOutputFile << lineFromFile << std::endl;
}

//Done outputting, close output file
myOutputFile.close();