如果我注释掉换行符,为什么“字符串”会变成不合格的变量

时间:2018-10-04 02:18:47

标签: c++ namespaces using

在这里填写新手,我对代码中的 newline 提出了一个快速的问题。因此,我知道插入using namespace std是不好的做法,在编写程序时,我避免使用coutcin而不先添加std::部分。但我认为,由于我没有导入命名空间库,因此可以将其注释掉。但是,当我这样做时,变量的string名称变得无法识别(它下面的红线)。当我允许再次导入命名空间时,红线消失。变量string仅在命名空间库中可用吗?

#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
//using namespace std;



// read and compare names
int main()
{
    std::cout << "Please enter two names \n";
    string first;
    string second;
    std:: cin >> first >> second; // read two strings
    if (first == second) std::cout << "that's the same name twice! \n";
    if (first < second) std::cout << first << " is alphabetically before " 
<< second << '\n';
    if (first > second) std::cout << first << " is alphabetically after " << 
second << '\n';

return 0;
}

1 个答案:

答案 0 :(得分:1)

如果您不包括using namespace std,则需要说出

std::string first;
std::string second;

因为string也已在standard命名空间(以及cout等)中定义。

是的,没错,string仅在standard中定义。 string是一个对象(不是原始类型),正是这个对象使您可以进行if(first==second)比较。否则,比较字符串的“正常”方式是使用strcmp()或类似的方式。