[英]What is the difference between char a[] = ?string?; and char *p = ?string?;?
[英]Difference between char and string
字符串只是一個字符數組(末尾有一個 '\0' 或 null 字符)。 但是當我在 c++ 中使用 getline function 時,如果我使用 char,它會給我一個錯誤,但字符串沒有錯誤。 以下作品:
#include<iostream>
int main()
{
std::string name;
std::cout<<"Name: ";
getline(std::cin,name);
std::cout<<"Name: "<<name;
return 0;
}
但是當我使用 char 而不是 string.It 不起作用
#include<iostream>
int main()
{
char name[50];
std::cout<<"Name: ";
getline(std::cin,name);
std::cout<<"Name: "<<name;
return 0;
}
`
您可能會想到 C 中的 cs50.h 之類的東西,其中string
是char*
的 typedef。 在 C++ 中情況並非如此,其中std::string
實際上是完全不同的類型。
有一種getline()
形式可以與char*
一起使用,但不是免費的 function。 它是std::istream
的成員 function , std::cin
繼承。 這是您修改后的代碼以使用它:
#include<iostream>
int main()
{
char name[50];
std::cout<<"Name: ";
std::cin.getline(name, sizeof name);
std::cout<<"Name: "<<name;
return 0;
}
您正在混合 C 字符串和 C++ 字符串。
“字符串只是一個字符數組(末尾有一個 '\0' 或 null 字符)。” 這對於 C 字符串是正確的。 您的代碼中的std::string
是 C++ 字符串。 它們是根本不同的。 C++ 字符串不是數組字符。 這是 class std::string
的 object 。 您可以將 C 字符串復制到 C++ 字符串中,並且可以使用 Z0D61078370CAD1D4122F 初始化 C++ 字符串。 您可以使用std::string::c_str()
將 C++ 字符串轉換為 const C 字符串。
std::getline
需要一個std::string
作為第二個參數。 您不能將它與 C 字符串一起使用。
這很簡單。
char 通常是 ASCII 中的單個字符。 例如 a,b,c 等。
另一方面,字符串通常是一個接一個的集合或系列。 例如“你好”、“你好兄弟”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.