Почему «строка» становится неприемлемой переменной, если я закомментирую Newline - PullRequest
0 голосов
/ 04 октября 2018

Заполните новичка здесь, и у меня был быстрый вопрос относительно новой строки в моем коде.Поэтому я понимаю, что вставка using namespace std - это плохая практика, и при написании моей программы я избегал использования cout и cin без добавления сначала части std::.Но я решил, что поскольку я не импортирую библиотеку namespace , я могу просто закомментировать ее.Но когда я сделал это, мое string имя для переменных стало неопознанным (красные линии под ним).Красные линии исчезают, когда я разрешаю импортировать namespace снова.Доступна ли переменная string только в библиотеке namespace ?

#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 голосов
/ 04 октября 2018

Если вы не включите using namespace std, вам нужно будет сказать

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

, поскольку string определено также в пространстве имен standard (а также cout и т. Д.).

Так что да, вы правы, что string определено только в standard.string - это объект (не примитивный тип), и именно это позволяет выполнять сравнение if(first==second).В противном случае «нормальный» способ сравнения строк - это strcmp() или аналогичный.

...