2017-09-01 215 views
-3

我無法讓我的字符串聲明被聲明爲變量。 int,double和char都改變字體顏色,但字符串不改變。無法聲明字符串變量

#include <iostream> 
#include <string>  // Supports use of "string" data type 
using namespace std; 

int main() { 
    int userInt = 0; 
    double userDouble = 0.0; 
    char userChar = 0; 
    string userString = 0; // this string declaration is not being recognized 
+2

請檢查[documentation](http://www.cplusplus.com/reference/string/string/string/) – hrust

+0

您不必初始化std :: string。只是'string userString;' – kangsu

+3

你得到了什麼確切的編譯器錯誤?你應該發佈它,這樣可以向你解釋編譯器在抱怨什麼。 – PaulMcKenzie

回答

2

如果你想默認初始化std::string爲空字符串,你不必做任何事情。這是默認完成的。

std::string x; 
std::string y = ""; 

兩者相等。

x.compare(y) == 0 

您目前的初始化將不起作用。它會在運行時拋出異常。

std::string str = 0; 

請檢查this example.


也是「字體顏色」並沒有很多工作要做,它是一個變量或沒有。這完全取決於您使用的IDE /編輯器。

  • 的IDE是不是上帝
  • 語法高亮可能無法正常工作的所有時間,如果一個變量被一個IDE突出或不
+0

我的問題與我將字符串初始化爲什麼沒有任何關係。它與「字符串」不被識別爲變量的事實有關。它沒有改變顏色和運行時,我得到一個錯誤,說變量「userString」尚未宣佈 –

+0

@RachelSugg不正確。如果你像這個'std :: string x = 0'初始化字符串,你會得到一個運行時錯誤。請重新檢查我的回答關於您的「顏色」問題。此外,如果您有某個聲明問題,您的程序將無法編譯。 – Blacktempel

2

我剛剛意識到你沒有使用在你的userString變量的值引號,而不是你應該輸入字符串如下

string userString = "0"; // this string declaration is not being recognized 

我希望這能解決你的問題

+0

這個問題與我在字符串後鍵入的任何東西沒有任何關係。只要我輸入它,它應該改變顯示被識別爲變量的顏色。它並沒有這樣做。 –

+0

嘿,Rachel Sugg C++對於數據結構往往非常自以爲是,例如 –

+0

請仔細閱讀,但是字符串,字符都是用引號輸入的,例如char ed =「a」;或字符串dd =「你好」;當你單獨使用你的零(例如字符串userString = 0)時,C++編譯器會壓縮它,因爲它需要用引號括起來的一組字符,因此可以使用布爾值,它使用1表示true,0表示false,例如布爾值t = 1;與布爾型t = true相同,也是布爾型f = 0;與布爾值f = false相同;或者你可以使用int,如果你只是想要一個數字,例如int n = 123; –

0

你根本忘了

  • C++不關心添加引號「」。它期望的是文本值,而不是數值。

    string userString = "0"; //is correct 
    string userString = 0; //is incorrect 
    

    另一個評論,只是讓你知道正確的術語,上面的代碼不只是一個聲明。

    int myVal; //declaration of a variable of integer data type 
    int myVal = 10; //is called initialization (declaration and assignment) 
    

    編輯:我已經複製並粘貼您的代碼到我的IDE,一個字符串的正確初始化,並能正常工作。我正在使用Codeblocks。