在C ++中读取字符串,在C ++中进行编译

时间:2018-12-12 20:43:18

标签: c++ string compilation

#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;
}

Hallo开发人员..

简而言之:我来自Java ..

够了吗?我在读取字符串时已经遇到了很大的问题,不得不搜索大约50页来查找所需的库。另外,我在语句中包含了命名空间std,但是在cout s之前删除std时却收到错误消息。

"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.

谁能解释为什么这行不通,以及是否还有其他读取字符串的方法?据我所知,控制台已加载了所有必需的文件(对于我使用Visual Studio服务器的db文件(我在本地保存的dll。)(对于调试器,我是德国人,“ geendet”表示完成,而不是在那里)。有什么问题

  • 尼尔斯·德里斯-

4 个答案:

答案 0 :(得分:1)

如果您刚开始学习c ++并使用Visual Studio,我建议您以这种方式创建项目: Chosse Empty Project

如选项所述,它将创建一个空项目,在其中您必须手动在其中添加头文件和cpp文件:

Just right click on the folder and select Add -> Add New Item

标题文件应转到标题文件夹,而cpp文件应转到源文件夹。

遇到的问题是因为在创建新项目时选择了“ Windows控制台应用程序”,默认情况下,Visual Studio会创建该项目,其中包括名为“ pch.h”的预编译头。

此标头在较大的项目中很有用,基本上,您应该在“ pch.h”标头中包含标头,这些标头将经常在多个文件中使用,例如:

#include <iostream>
#include <string>

等... 然后,您应该在最顶部的cpp文件中包含“ pch.h”。

警告,这甚至都不是主题的基础,但是,如果您只是开始尝试,我想处理一个空项目会更容易,但是以后再做一些关于编译的标头,它们非常有用。

也正如其他提到的那样,尽量避免

using namespace std;

尽可能

希望这对以后有帮助。

答案 1 :(得分:0)

谢谢@“ Radu Z”。您几乎是严厉的:问题是,必须使用标题,我不知道为什么,但是必须为空,我也不知道这在哪里有意义,但是它对我来说删除行关于命名空间,让我留下:

#ifndef PCH_H
#define PCH_H


// TODO: add headers

#endif //PCH_H

我非常感谢你们大家很快回答了这个问题,并保证在接下来的问题中将我的语言更改为英语。关于名称空间,我删除了它,因为无论如何我都必须使用stds。

答案 2 :(得分:-1)

首先,我删除了代码的第一行,即

#include "pch.h"

,因为我没有该文件并且它已编译。也许您也没有该文件。然后,我在“是蓝色”之前放置一个空格,以使复数名词和“是蓝色”没有连接。

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

一切都很好。 也许您的问题是您使用的编译器?我无法破译您的错误,但我认为您应该检查pch.h文件和编译器。

答案 3 :(得分:-1)

根据您的问题,我假设您正在使用 Visual Studio 。 您应该始终有第一行包含行

#include "stdafx.h"

#include "pch.h" 

最近介绍的。 See also

然后转到 项目->属性 然后到 C / C ++->预编译头

在第一个设置中:预编译标题,选择创建(/ Yc)

在第二个设置中:预编译头文件,选择 stdafx.h

在第三个设置中:预编译的标题输出文件,选择 $(IntDir)$(TargetName).pch

实际上,这是您定义.pch文件的地方。