使用静态转换将字符转换为整数不起作用?

时间:2019-02-06 00:23:26

标签: c++ xcode casting static-cast

我有这个程序,遇到问题的函数是stringLength函数。我不能更改函数声明,因为它是我们教授给我们的。我遇到的问题是将整数(在本例中为i)强制转换为字符以将其插入字符数组。我在网上查了一下,显然是这样做了

A[0]= char(i+48); 

这有效,但是我不想使用它,因为我从互联网上获得了它。 我要使用的是

A[0] = static_cast<char>(i);

如果有另一种方法可以投放它,或者有一种简单的方法将不胜感激。我什至尝试做

 A[0] = i; 
 A[0] = char(i); //or this 

这是我的整个程序。最后一个功能是我遇到问题的功能

编辑:我要实现的输出说我使用的字符串是“ Bonjour” 我想要说的输出是“ 7Bonjour”。在Bonjour之前,我的静态演员转换没有任何问题。字符串的长度应该出现在字符串之前

编辑2:我简化了代码,只包含有关我的问题的重要功能和内容

#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("input.txt");
ofstream out ("output.txt");

void stringCopy(char *A, char *B);
bool stringCompare(char *A, char *B);
void stringConcatenation (char *A, char *B);
int stringPosition(char *A, char B);
int stringLength(char *A);
int main (){
char str1[15], str2[15];
char pos;
int number;

if(!in){
    cout << "File not opening" << endl;
}
else{
cout << "File opened" << endl;
}

in >> str1;
stringLength(str1);
out << " Contents of the array after string Length: " << str1 << endl;



in.close();
out.close();
}
void stringConcatenation (char *A, char *B){
int i;
int j;
for (i = 0; A[i]!='\0';i++){ // find the last position of the first string  
}
for (j = 0; B[j]!='\0';j++){
    A[i++] = B[j]; // add the first letter of the second string to the next spot of the first string
    A[i]='\0';
}
}
int stringLength(char *A){
char arr[15];
int i = 0;
while (A[i]!='\0'){
    arr[i]=A[i];
    i++; // increment i one more to store NULL position in temp array
}
arr[i]='\0'; //set last position of the temp array to NULL
A[0]= static_cast<char>(i); //static cast i to char and add to first position
A[1]= '\0'; // sets the last position of the first array for the string concatenation to work and detect end of array
stringConcatenation(A, arr);
return i;
}

1 个答案:

答案 0 :(得分:1)

要使用<!doctype html> <html> <head> <meta charset="utf-8"> <title>That's a Lot of Div</title> </head> <body> <div id="target"></div> <script src="app.js"></script> </body> </html>,必须执行以下操作:

static_cast

静态转换的实际作用是将int转换为具有相应ASCII值的char。因为A[0] = static_cast<char>(i + 48); 的ASCII值'0'为48,它将给出正确的输出。

但是,如果i <= 9,这种方法将行不通。

相反,您必须执行以下操作:

i >= 10