請您指教,為什么內回圈只運行一次?我想為輸入檔案的每一行添加后綴,然后將結果存盤在輸出檔案中。
謝謝
例如:輸入檔案包含:
AA
AB
AC
后綴檔案包含:
_1
_2
輸出檔案應包含:
AA_1
AB_1
AC_1
AA_2
AB_2
AC_2
我的結果是:
AA_1
AB_1
AC_1
代碼:
int main()
{
string line_in{};
string line_suf{};
string line_out{};
ifstream inFile{};
ofstream outFile{"outfile.txt"};
ifstream suffix{};
inFile.open("combined_test.txt");
suffix.open("suffixes.txt");
if (!inFile.is_open() && !suffix.is_open()) {
perror("Error open");
exit(EXIT_FAILURE);
}
while (getline(suffix, line_suf)) {
while (getline(inFile, line_in))
{
line_out = line_in line_suf;
outFile << line_out << endl;
}
inFile.close();
outFile.close();
}
}
uj5u.com熱心網友回復:
恕我直言,更好的方法是將檔案讀入vectors,然后遍歷向量:
std::ifstream word_base_file("combined_test.txt");
std::ifstream suffix_file("suffixes.txt");
//...
std::vector<string> words;
std::vector<string> suffixes;
std::string text;
while (std::getline(word_base_file, text))
{
words.push_back(text);
}
while (std::getline(suffix_file, text))
{
suffixes.push_back(text);
}
//...
const unsigned int quantity_words(words.size());
const unsigned int quantity_suffixes(suffixes.size());
for (unsigned int i = 0u; i < quantity_words; i)
{
for (unsigned int j = 0; j < quantity_suffixes; j)
{
std::cout << words[i] << suffix[j] << "\n";
}
}
編輯 1:沒有向量
如果您還沒有了解向量或喜歡破壞您的存盤設備,您可以嘗試以下操作:
std::string word_base;
while (std::getline(inFile, word_base))
{
std::string suffix_text;
while (std::getline(suffixes, suffix_text))
{
std::cout << word_base << suffix_text << "\n";
}
suffixes.clear(); // Clear the EOF condition
suffixes.seekg(0); // Seek to the start of the file (rewind).
}
記住,在內部while回圈之后,suffixes檔案在最后;不會發生更多讀取。因此檔案需要在讀取之前定位在開始處。此外,需要在讀取前清除 EOF 狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/346462.html
下一篇:創建一個按鈕來使用宏查找 替換
