чтение строк в с ++, компиляция в с ++ - PullRequest
0 голосов
/ 12 декабря 2018
#include "pch.h"
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <sstream>
#include <istream>
using namespace std;
int main()
{
    std::string color, pluralNoun, celebrity;

    std::cout << "enter a color: ";
    std::getline(cin, color);  
    std::cout << "enter a plural noun: ";
    std::getline(cin, pluralNoun);
    std::cout << "enter a celebrity: ";
    std::getline(cin, celebrity);

    cout << "Roses are " << color << endl;
    cout << pluralNoun << "are blue" << endl;
    cout << "I love " <<celebrity <<endl;


    return 0;
}

Привет, разработчики ..

Короче говоря: я с Java ..

Этого достаточно?У меня уже были огромные проблемы с чтением строк, и мне пришлось искать около 50 страниц в нужных библиотеках.Кроме того, я включил в оператор пространство имен std, и все же я получаю сообщение об ошибке при удалении std перед cout.

"ConsoleApplication3.exe" (Win32): "D:\Users\nils\source\repos\ConsoleApplication3\Debug\ConsoleApplication3.exe" geladen. Symbole wurden geladen.
"ConsoleApplication3.exe" (Win32): "C:\Windows\SysWOW64\ntdll.dll" geladen. Symbole wurden geladen.
"ConsoleApplication3.exe" (Win32): "C:\Windows\SysWOW64\kernel32.dll" geladen. Symbole wurden geladen.
"ConsoleApplication3.exe" (Win32): "C:\Windows\SysWOW64\KernelBase.dll" geladen. Symbole wurden geladen.
"ConsoleApplication3.exe" (Win32): "C:\Windows\SysWOW64\msvcp140d.dll" geladen. Symbole wurden geladen.
"ConsoleApplication3.exe" (Win32): "C:\Windows\SysWOW64\vcruntime140d.dll" geladen. Symbole wurden geladen.
"ConsoleApplication3.exe" (Win32): "C:\Windows\SysWOW64\ucrtbased.dll" geladen. Symbole wurden geladen.
Der Thread 0x4d6c hat mit Code -1073741510 (0xc000013a) geendet.
Der Thread 0x4dc8 hat mit Code -1073741510 (0xc000013a) geendet.
Der Thread 0x486c hat mit Code -1073741510 (0xc000013a) geendet.
Das Programm "[2132] ConsoleApplication3.exe" wurde mit Code -1073741510 (0xc000013a) beendet.

Может кто-нибудь объяснить, почему это не работает, и если естьЕсть другие способы чтения строк?Насколько я могу читать консоли, все требуемые файлы были загружены (для файла pdb я использовал сервер Visual Studio, DLL я сохранил локально. (Sry для отладчика, я немец, "geendet" означает, что он закончил, а неесть какие-либо проблемы)

  • Нильс Дриес -

Ответы [ 4 ]

0 голосов
/ 13 декабря 2018

Если вы только начали изучать c ++ и использовать Visual Studio, я бы порекомендовал вам создать свой проект следующим образом: Chosse Empty Project

Как вариант говорит, что он создаст пустойпроект, в котором вам нужно будет вручную добавить файлы заголовков и cpp в следующие файлы:

image Add New Item">

Файл заголовка должен идти в папку заголовков, а файл cpp - вИсходная папка.

Проблема, с которой вы столкнулись, заключалась в том, что при создании нового проекта вы выбрали «Консольное приложение Windows», по умолчанию Visual Studio создаст проект, включающий предварительно скомпилированный заголовок с именем «pch.h».

Этот заголовок полезен в немного более крупных проектах, в основном вы должны включать заголовки "pch.h", которые вы будете очень часто использовать в нескольких файлах, таких как:

#include <iostream>
#include <string>

и т. Д.И затем вы должны включить "pch.h" в файл cpp в самом верху.

Предупреждение, это даже не основы темы, но если вы только начинаете и пробуете что-то, я думаюэто пошлоЭто облегчает работу с пустым проектом, но для дальнейшего исследования предварительно скомпилированных заголовков они очень полезны.

Также, как уже упоминалось, старайтесь избегать

using namespace std;

как можно больше

Надеюсь, это поможет вам позже.

0 голосов
/ 13 декабря 2018

Спасибо @ "Раду Z".Вы были почти правы: проблема была в том, что должен был использоваться заголовок, я не знаю почему, но он должен был быть пустым, и я также не знаю, где это имеет смысл, но мне помогло удалить строкиЧто касается пространства имен, оставив мне:

#ifndef PCH_H
#define PCH_H


// TODO: add headers

#endif //PCH_H

Я очень благодарен, что вы все так быстро ответили, и я обещаю изменить свой язык на английский для следующих вопросов.Что касается пространства имен, я удалил его, так как в любом случае мне пришлось использовать stds.

0 голосов
/ 13 декабря 2018

Исходя из вашего вопроса, я предполагаю, что вы используете Visual Studio .У вас всегда должна быть первая строка включения

#include "stdafx.h"

или

#include "pch.h" 

, представленная недавно. См. Также .

Затем перейдите к Проект -> Свойства , а затем к C / C ++ -> Предварительно скомпилированные заголовки

В первом параметре: Предварительно скомпилированный заголовок выберите Создать (/ Yc)

Во втором параметре: Файл скомпилированного заголовка выберите stdafx.h

В третьем параметре: Выходной файл скомпилированного заголовка select $ (IntDir) $ (TargetName) .pch

Thisфактически вы определяете ваш файл .pch.

0 голосов
/ 13 декабря 2018

Сначала я удалил первую строку вашего кода, которая является

#include "pch.h"

, так как у меня не было этого файла, и он был скомпилирован.Может быть, у вас тоже нет этого файла.Затем я ставлю пробел перед «синим», чтобы существительное во множественном числе и «синий» не были связаны.

cout << pluralNoun << " are blue" << endl;

И все работало идеально.Может быть, ваша проблема в компиляторе, который вы используете?Я не могу расшифровать ваши ошибки, но я считаю, что вы должны проверить файл pch.h и компилятор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...