#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
void reverse_words(const std::string &file) {
std::ifstream inFile { file };
std::vector<std::string> lines;
if(static_cast<bool>(inFile)) {
std::string line;
while(std::getline(inFile, line, '\n')) {
lines.push_back(line);
}
std::vector<std::string> reverse_line;
std::string word;
for(auto line: lines) {
while(std::getline(line, word, ' '))
reverse_line.push_back(word);
}
}
}
int main(int argc, char ** argv) {
if(argc == 2) {
reverse_words(argv[1]);
}
}
在我的程序的最后一个for循环中,我想从一行中读取一个单词,但该行是一个字符串,因此与getline()函数的定义不匹配。我该如何将该行强制转换为stringstream,以便像读取文件一样使用它?请忽略目前程序的逻辑,它还没有完成,我的问题是特定于C++的。
if(static_cast<bool>(inFile))
,可以直接使用if(inFile)
。 - user2249683if (static_cast<bool>(inFile)) {
。InFile
在上下文中可以转换为bool
,所以你只需写成if (inFile) {
。 - Barryif(static_cast<bool>(inFile))
或if(inFile)
。如果文件未打开,则对getline
的调用将失败,并且lines
将为空。 - Pete Becker