获取存储的内存编号

时间:2015-03-11 03:18:17

标签: c++ arrays string file-io

我想把两个文件命名为输入,另一个命名为输出

在我输入的文件中:Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Vestibulum dignissim,tincidunt vitae nisi eu viverra。 Sed,consequat。

字符串数组应该是128个元素。

我要做的是让程序从输入文件中逐字读取到128个元素的字符串数组中。

这是我到目前为止提出的代码:

int main(){
string Lnm[128];
int l = 0;
//input file and output file.
fstream theInput("Input.txt", ios::in);
fstream theOutput("Output.txt", ios::out);

//checks if file is there
if (!theInput.good()){
    cout << "A PROBLEM HAS OCCURED!\n" << "______________________________\n" << "ERROR: File does not exist! Please make a valid file.\n";
    system("pause");
    return 0;
}

for (Lnm; getline(theInput, Lnm[l], '\n');) {
    cout << Lnm << endl;
}

//checking      

if (theInput.eof()){
    cout << "Successful!\n";
    theOutput << Lnm[l] << "\n";

}
else if (theInput.fail()){
    cout << "Invalid Input\n";
}
else if (theInput.bad()){
    cout << "Error! go and fix the problem.\n";
}
theInput.close();
theOutput.close();

system("pause");
return 0;

}

我的问题是我得到的东西存放在哪里,或者至少我认为是这样。我如何制作它以显示文本并将其导入输出?

1 个答案:

答案 0 :(得分:1)

这些行

for (Lnm; getline(theInput, Lnm[l], '\n');) {
    cout << Lnm << endl;
}

不要增加l。由于Lnm[0]初始化为l,您最终只能将这些字词读入0

此外,cout << Lnm << endl;可能只会打印一个指针 - 指向Lnm的第一个元素的指针。

将它们更改为:

for ( l = 0; getline(theInput, Lnm[l], '\n'); ++l ) {
    cout << Lnm[l] << endl;
}

准备好将字符串打印到输出文件时,需要使用:

for ( int i = 0; i < l; ++i ) {
   theOutput << Lnm[i] << "\n";
}

PS 我会使用numLines代替l。这将使代码更具可读性。