C++ 打印字符数组中的实体
是否可以打印字符数组中的实体,以便可以实际看到作为字符串终止符\0和新行\n的每个字符。。。比如说 假设一个字符串由以下内容组成C++ 打印字符数组中的实体,c++,arrays,char,C++,Arrays,Char,是否可以打印字符数组中的实体,以便可以实际看到作为字符串终止符\0和新行\n的每个字符。。。比如说 假设一个字符串由以下内容组成 abkdfkdfmdfier\nkdfdfkdkf\n\0 我想通过std::cout查看所有内容,我认为您应该编写一个函数,在旧字符串的基础上创建一个新字符串,并将“\n”和“\0”字符更改为\\n,\\0字符串 我可能有一些错误,但我的主要想法是 我希望这有帮助 #include <stdio.h> #include <conio.h>
abkdfkdfmdfier\nkdfdfkdkf\n\0
我想通过std::cout查看所有内容,我认为您应该编写一个函数,在旧字符串的基础上创建一个新字符串,并将“\n”和“\0”字符更改为\\n,\\0字符串 我可能有一些错误,但我的主要想法是 我希望这有帮助
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
char *mstr;
void newStr(char *str){
char *buf;
if((buf=(char*)malloc(strlen(str)+4)*sizeof(char))==NULL){
printf("err in allocating buffer");
getch();
exit(1);
}
register unsigned int i;
for(i=0;i<strlen(str) & i<30000;i++){
if(str[i]=='\n'){
str[i]=0;
strcpy(buf,"\\n");
strcat(buf,(char*)(str+i+1));
strcat(str,buf));
}
}
strcat(str,"\\0");
}
void main(){
clrscr();
strcpy(mstr,"this is a\n test\nggg\0");
printf("form1:\n%s",str);
newStr(str);
printf("\nform2:\n%s",str);
getch();
}
您需要检查字符串中字符的ASCII码
for (int i=0; i<strlen(string)+1; i++) {
if (printable(string[i])) cout << string[i]; // If normal char like abc ' ' 123 !@#
else {
int code = string[i];
// i will write for '\n' for example
switch (code) {
case 0x0A : cout << "\\n";
break;
// etc...
}
}
}
现在,printablechar c将检查ascii值是否是一些可打印字符,还将检查其中是否不是一些特殊字符,如\0、\n等
以下是使用流格式化程序的解决方案(&S):
#include <cctype>
void print_escaped(char chr) {
if (std::isprint(chr)) {
std::cout << chr;
} else {
switch(chr) {
case '\0': std::cout << "\\0"; break;
case '\r': std::cout << "\\r"; break;
case '\n': std::cout << "\\n"; break;
case '\t': std::cout << "\\t"; break;
default: // other non printable chars
std::cout << "\\x" << std::setfill('0') << std::setw(2) << std::hex << (int)chr;
break;
}
}
}
int main() {
std::string text = "abkdfkdfmdfier\nkdfdfkdkf\n";
text.push_back('\0'); // don't use it in a raw string !
text.push_back('\x03');
std::for_each(text.begin(), text.end(), print_escaped);
std::cout << std::endl;
}
您想要的输出是什么?请给我一些时间…一切-包括\0和\n欢迎您,但我认为这个想法是正确的,您需要稍微更改一下。但是我的笔记本电脑里没有任何编译器。