Я пытаюсь выучить базовый C ++ после того, как стал Java-разработчиком. Поэтому я решил попробовать CLion. Я написал этот базовый код только для ознакомления с синтаксисом C ++.
#include <iostream>
using namespace std;
int main() {
string word;
cout << "Enter a word to reverse characters: " << endl;
getline(cin, word);
for(int i = word.length(); i != -1; i--) {
cout << word[i];
}
return 0;
}
Код функционален. Оно меняет любое введенное вами слово. Я хотел пройтись по нему, чтобы увидеть переменные, а что нет, и протестировать отладчик CLion.
Моя проблема возникает, когда я добираюсь до
getline(cin, word);
Когда я ступаю на эту строку, я ввожу слово и нажимаю ввод. Тогда перешагни. После этого ничего не происходит; все кнопки перехода, входа и т. д. отключены. Я не могу продолжить цикл или выполнить оставшуюся часть кода.
Я много раз использовал отладчик Eclipse для разработки Java без каких-либо проблем. Любые идеи могут быть полезны.
TL; DR Как пройти через программу командной строки C ++ с базовым вводом и выводом, используя CLion?
Я повторил проблему — мне кажется, что при отладке новая строка проглатывается IDE и не передается обратно в программу. Я отправил сообщение об ошибке в JetBrains. Я не вижу способа обойти это, кроме выхода из IDE и отладки напрямую с помощью GDB или другой IDE.
ОБНОВИТЬ: Эта проблема была исправлена в Clion EAP Build 140.1221.2. Он даже сделал первое изменение, указанное в примечаниях к выпуску:
Наиболее ценные изменения:
- Отладчик больше не зависает от оператора «cin >>».
Глядя на свой код, если все правильно, нужно добавить #include <string>
,
Когда я запускаю это, он компилирует и завершает вывод.
#include <iostream>
#include <string>
int main() {
std::string word;
std::cout << "Enter a word to reverse chars: ";
std::getline(std::cin, word); //Hello
for (int i = word.length() - 1; i != -1; i--) {
//Without - 1 " olleh"//With - 1 "olleh"std::cout << word[i];
}
std::cout << std::endl;
system("pause");
return 0;
}
Используйте следующий код. Я изменил ваш код, чтобы сделать его работоспособным для ваших целей. 🙂
#include <iostream>
#include <string>
using namespace std;
int main() {
string word;
cout << "Enter a word to reverse characters: " << endl;
getline(cin, word);
for(int i = word.length() - 1; i != -1; i--) {
cout << word[i];
}
printf("\n");
system("pause");
return 0;
}