簡體   English   中英

字符和字符串的區別

[英]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 之類的東西,其中stringchar*的 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 字符串一起使用。

std::string 是由字符組成的 class,而不是字符數組。 這意味着這兩種類型是不同的。 見 std::string 定義:這里

getline function 需要一個字符串。 它不適用於字符數組。 查看文檔:這里

這很簡單。

char 通常是 ASCII 中的單個字符。 例如 a,b,c 等。

另一方面,字符串通常是一個接一個的集合或系列。 例如“你好”、“你好兄弟”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM