Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 打印字符数组中的实体_C++_Arrays_Char - Fatal编程技术网

C++ 打印字符数组中的实体

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>

是否可以打印字符数组中的实体,以便可以实际看到作为字符串终止符\0和新行\n的每个字符。。。比如说

假设一个字符串由以下内容组成

 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欢迎您,但我认为这个想法是正确的,您需要稍微更改一下。但是我的笔记本电脑里没有任何编译器。