我的循環有些東西肯定是錯誤的,因爲在讀取並執行第一行程序結束之後。ifstream getline問題(它只能讀取第一行)
if (infile.is_open())
{
cout << "Input filename: ";
cin>>filename;
infile.open(filename.c_str());
cout<< "Output filename: ";
cin>>filename;
outfile.open(filename.c_str());
while(getline(infile,input))
{
string output = "";
for(int x = 0; x < input.length(); x++)
output += cipher(input[x]);
cout<<output<<endl;
outfile<<output;
}
}
有關如何使這項工作的任何建議?
編輯
其次的建議,並得到這個:
if (infile.is_open()) {
cout << "Input filename: ";
cin>>filename;
infile.open(filename.c_str());
if (!infile.is_open())
{
std::cout << "Failed to open the input file." << std::endl;
return -1;
}
cout<< "Output filename: ";
cin>>filename;
outfile.open(ofilename.c_str());
if (!outfile.is_open())
{
std::cout << "Failed to open the output file." << std::endl;
return -1;
}
while(getline(infile,line)){
string output = "";
for(int x = 0; x < input.length(); x++) {
output += cipher(input[x]);
}
}
,但它仍然只讀取第一線......一切工作完全沒有問題....只是不能讀取超出第一行的任何內容..
'如果(infile.is_open()){... infile.open(filename.c_str()); ......} - 對我沒有任何意義。 – LihO 2013-03-20 01:52:12
@LihO你並不孤單。 – WhozCraig 2013-03-20 01:52:50
你能解釋爲什麼你在打開'infile'之前測試'in file.is_open()',然後及時***不***檢查它,當你*應該*? – WhozCraig 2013-03-20 02:01:42