C++ 将字符串转换为ascii字符

C++ 将字符串转换为ascii字符,c++,C++,我想请求用户输入单词,然后使用strcpy将单词从string转换为char。然后我想确定单词中所有字母的ascii码的总和 然而,我有困难。我不太明白我怎么能做到。这就是我到目前为止所能做到的 #include <iostream> #include <time.h> #include <stdlib.h> #include <string.h> using namespace std; int main() { string wor

我想请求用户输入单词,然后使用strcpy将单词从string转换为char。然后我想确定单词中所有字母的ascii码的总和

然而,我有困难。我不太明白我怎么能做到。这就是我到目前为止所能做到的

#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main()
{
    string word;
    cout << "Enter word: ";
    getline(cin, word);
    /*
        char w[word];
        strcpy(w,word.c_str());
        int ('A');
        cout<<char(65); 
    */
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串字;
库特
char w[word]
不正确。方括号表示大小,大小必须是常量整数表达式。
word
的类型为
std::string
,因此这既没有逻辑意义,也没有实际意义。可能您的意思是:

char w = word;
但这仍然不起作用,因为
word
是一个字符串,而不是一个字符。在这种情况下,正确的代码是:

char* w = new char[word.size() + 1];
也就是说,使用
char*
w
分配内存。然后使用
word.size()+1
初始化总计为这些字节的堆分配内存。使用完
w
后,不要忘了执行强制的
delete[]

delete[] w;
但是,请注意,在这种情况下不需要使用原始指针和显式
new

#include <numeric>

int main ()
{
    std::string word;

    std::getline(std::cin, word);

    int sum = std::accumulate(word.begin(), word.end(), 0);                    /*
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    */

    std::cout << "The sum is: " << sum << std::endl;
}
#包括
int main()
{
字符串字;
std::getline(std::cin,word);
int sum=std::累加(word.begin(),word.end(),0)/*
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    */
标准::cout
char w[word]
不正确。方括号表示大小,大小必须是常量整数表达式。
word
的类型为
std::string
,因此这既没有逻辑意义,也没有实际意义。可能您的意思是:

char w = word;
但这仍然不起作用,因为
word
是一个字符串,而不是一个字符。在这种情况下,正确的代码是:

char* w = new char[word.size() + 1];
也就是说,使用
char*
w
分配内存。然后使用
word.size()+1
初始化总计为这些字节的堆分配内存。使用完
w
后,不要忘了执行强制的
delete[]

delete[] w;
但是,请注意,在这种情况下不需要使用原始指针和显式
new

#include <numeric>

int main ()
{
    std::string word;

    std::getline(std::cin, word);

    int sum = std::accumulate(word.begin(), word.end(), 0);                    /*
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    */

    std::cout << "The sum is: " << sum << std::endl;
}
#包括
int main()
{
字符串字;
std::getline(std::cin,word);
int sum=std::累加(word.begin(),word.end(),0)/*
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    */
标准::cout
char w[word]
不正确。方括号表示大小,大小必须是常量整数表达式。
word
的类型为
std::string
,因此这既没有逻辑意义,也没有实际意义。可能您的意思是:

char w = word;
但这仍然不起作用,因为
word
是一个字符串,而不是一个字符。在这种情况下,正确的代码是:

char* w = new char[word.size() + 1];
也就是说,使用
char*
w
分配内存。然后使用
word.size()+1
初始化总计为这些字节的堆分配内存。使用完
w
后,不要忘了执行强制的
delete[]

delete[] w;
但是,请注意,在这种情况下不需要使用原始指针和显式
new

#include <numeric>

int main ()
{
    std::string word;

    std::getline(std::cin, word);

    int sum = std::accumulate(word.begin(), word.end(), 0);                    /*
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    */

    std::cout << "The sum is: " << sum << std::endl;
}
#包括
int main()
{
字符串字;
std::getline(std::cin,word);
int sum=std::累加(word.begin(),word.end(),0)/*
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    */
标准::cout
char w[word]
不正确。方括号表示大小,大小必须是常量整数表达式。
word
的类型为
std::string
,因此这既没有逻辑意义,也没有实际意义。可能您的意思是:

char w = word;
但这仍然不起作用,因为
word
是一个字符串,而不是一个字符。在这种情况下,正确的代码是:

char* w = new char[word.size() + 1];
也就是说,使用
char*
w
分配内存。然后使用
word.size()+1
初始化总计为这些字节的堆分配内存。使用完
w
后,不要忘了执行强制的
delete[]

delete[] w;
但是,请注意,在这种情况下不需要使用原始指针和显式
new

#include <numeric>

int main ()
{
    std::string word;

    std::getline(std::cin, word);

    int sum = std::accumulate(word.begin(), word.end(), 0);                    /*
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    */

    std::cout << "The sum is: " << sum << std::endl;
}
#包括
int main()
{
字符串字;
std::getline(std::cin,word);
int sum=std::累加(word.begin(),word.end(),0)/*
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    */

std::cout您不需要使用
strcpy()
(或者根本不需要使用
char*
),但这将使用
char
指针进行计数:

#include <iostream>
#include <string>

int main() {
    std::string word;

    std::cout << "Enter word: ";
    std::cin >> word;

    const char * cword = word.c_str();
    int ascii_total = 0;

    while ( *cword ) {
        ascii_total += *cword++;
    }

    std::cout << "Sum of ASCII values of characters is: ";
    std::cout << ascii_total << std::endl;

    return 0;
}
如果您确实想使用strcpy()
,我将把它作为一个练习留给您来修改上面的代码

这里有一个更好的方法,只需使用
std::string
(和C++11,并且显然首先假定您的系统使用ASCII字符集):

#包括
#包括
int main(){
字符串字;
std::cout>word;
int ascii_总计=0;
用于(自动s:word){
ascii_总计+=s;
}

std::cout您不需要使用
strcpy()
(或者根本不需要使用
char*
),但这将使用
char
指针进行计数:

#include <iostream>
#include <string>

int main() {
    std::string word;

    std::cout << "Enter word: ";
    std::cin >> word;

    const char * cword = word.c_str();
    int ascii_total = 0;

    while ( *cword ) {
        ascii_total += *cword++;
    }

    std::cout << "Sum of ASCII values of characters is: ";
    std::cout << ascii_total << std::endl;

    return 0;
}
如果您确实想使用strcpy()
,我将把它作为一个练习留给您来修改上面的代码

这里有一个更好的方法,只需使用
std::string
(和C++11,并且显然首先假定您的系统使用ASCII字符集):

#包括
#包括
int main(){
斯特林