C++ 将字符串转换为ascii字符
我想请求用户输入单词,然后使用strcpy将单词从string转换为char。然后我想确定单词中所有字母的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
#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(){
斯特林