#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(). Как я могу преобразовать строку в строковый поток, чтобы использовать ее для чтения так же, как файл?
Пожалуйста, игнорируйте логику программы на данный момент, она не завершена, мой вопрос специфичен для C++.
if(static_cast<bool>(inFile))
, используйтеif(inFile)
- person   schedule 14.03.2016if (static_cast<bool>(inFile)) {
.InFile
контекстуально преобразуется вbool
, поэтому вы можете просто написатьif (inFile) {
- person Barry   schedule 14.03.2016if(static_cast<bool>(inFile))
илиif(inFile)
. Если файл не открылся, вызовgetline
завершится ошибкой, аlines
будет пустым. - person Pete Becker   schedule 15.03.2016