Новичок в C ++ застрял

0

Я начал изучать c++ на прошлой неделе, и я наконец узнал достаточно, чтобы попытаться встать на свои собственные ноги. хорошо угадайте, что у меня есть проблема. программа, которую я пытаюсь сделать, будет запрашивать файл, уже существующий или создающий новый, если имя не найдено и помещает информацию в строки файла. когда вы вводите -1, вы закрываете программу.

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
 string x;
 string Input;
 int line=0;

 cout << "Please enter the name of the file with the file type" << endl;
 cin >> x;

 ofstream SelectedFile;
 SelectedFile.open(x);

 while(Input != "-1"){
  cout << "Enter the content of the " << line <<" line, or type -1 to quit." << endl;
  cin >> Input;
  line++;
 }
 SelectedFile.close();
}
  • 3
    В чем проблема? Есть ли ошибка? Разве это не делает то, что вы ожидаете?
  • 0
    Попробуйте сделать отступ в коде? Кстати - у вас есть один набор ног
Показать ещё 2 комментария
Теги:
string
function
while-loop
ofstream

1 ответ

1

Я предполагаю, что у вас ошибка компиляции, потому что std::ofstream::open не принимает std::string в качестве аргумента в стандарте С++ 98. Попробуй это:

SelectedFile.open(x.c_str());

Или скомпилируйте с поддержкой С++ 11.

Обновление: где вы пишете вещи в файл? Я думаю, вы забыли написать эту часть

SelectedFile << line << std::endl ;
  • 1
    Чтобы расширить объяснение соруша, в C ++ есть 2 основных типа строк по историческим причинам: std :: string, которая имеет встроенные функции, такие как поиск, отслеживает свой собственный размер и т. Д., И старая строка в стиле C ( c_str ), которая является простой массив типа char . Многие методы C ++ используют только один или другой, но, как показал Соруш, между ними легко выполнить преобразование (просто не всегда очевидно, когда вы только начинаете).
  • 0
    я знаю, что я не должен говорить спасибо, но я сделаю это в любом случае. Кстати, ваше предложение о выполнении (SelectedFile << line << std :: endl;) было бы правильным, если бы вы заменили строку переменной на Input. также программа работает как шарм, за исключением того, что она включает в себя «-1» в последней строке. небольшая проблема, но плохо разбираюсь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню