PTA L1-042 日期格式化(将字符数组转换为string类型)

原题
主要通过这题介绍 C++ 中如何将字符数组与字符串的相互转换

参考博客

字符数组转字符串:

char a[1000];
string s(&a[i],&a[j]);//i为要转化的其实位置,j为末尾位置加一

字符串转字符数组

#include<bits/stdc++.h>
using namespace std;
char a[15];
int main()
{
    string s;
    cin>>s;
    strncpy(a,s.c_str(),s.length()+1);//字符强制转化为字符串函数,末尾同样加一
    cout<<a;
}

AC代码:

#include<bits/stdc++.h>
using namespace std;
char s[1000];
int main()
{
      string a,b,c;
      cin>>s;
      int n=strlen(s),flag=1,x;
      string S(&s[2],&s[6]);//将字符数组转换为字符串
      cout<<S<<endl;
      for(int i=0;i<n;i++)
      {
         if(s[i]=='-'&&flag)
         {
           a=S.substr(0,i);
           x=i;
           flag=0;
         }
         else if(s[i]=='-')
         {
           b=S.substr(x+1,i-x-1);
           x=i;
           break;
         }
      }
      c=S.substr(x+1);
      cout<<c<<'-'<<a<<'-'<<b;
return 0;
}

其实这题可以直接将原字符数组转换为三个字符串,不用上面这么麻烦....

原文地址:https://www.cnblogs.com/Pecoz/p/12444888.html

时间: 2024-11-09 16:12:33

PTA L1-042 日期格式化(将字符数组转换为string类型)的相关文章

C++string,char* 字符数组,int类型之间的转换

string.int 常见类型之间相互转换 int & string 之间的转换 C++中更多的是使用流对象来实现类型转换 针对流对象 sstream实现 int,float 类型都可以实现 #include <sstream> //int convert to string void int2str(const int &int_temp,string &string_temp){ stringstream s_stream; s_stream<<int_

Delphi Byte数组与String类型的转换

string string = AnsiString = 长字符串,理论上长度不受限制,但其实受限于最大寻址范围2的32次方=4G字节: 变量Str名字是一个指针,指向位于堆内存的字符序列,字符序列起始于@Str[1],@Str[1]偏移负16个字节的空间存储着字串长度.引用计数等信息.字符序列以NULL结束. string[n] string[n] = ShortString = 短字符串,最多容纳255个字符,实际长度是字符长度+1,是Delphi的简单类型: Str[0]存储着字符的个数,

C++中字符数组与string的相互转换

字符数组转化成string类型char ch [] = "ABCDEFG";string str(ch);//也可string str = ch;或者char ch [] = "ABCDEFG";string str;str = ch;//在原有基础上添加可以用str += ch; 将string类型转换为字符数组char buf[10];string str("ABCDEFG");length = str.copy(buf, 9);buf[le

字符数组和string判断是否为空行 NULL和0 namespace变量需要自己进行初始化

string 可以这样判断空行input !="" 字符数组可以通过判断第一个元素是否为空字符'\0',是的话为空行arrar[0]=='\0':或者用长度strlen(char arrar)==0特别注意这两个arrar[0]==0:arrar[0]==NULL:因为指向了空指针,空指针指向NULL,NULL在VS这个IDE上,代表0,所以上述成立 NULL用于指针和对象,0用于数值 在不同的系统中,NULL并非总是和0等同,NULL仅仅代表空值,也就是指向一个不被使用的地址,在大多

【c++基础】字符数组和string相互转换

字符数组转化成string类型char ch [] = "ABCDEFG";string str(ch);//也可string str = ch;或者char ch [] = "ABCDEFG";string str;str = ch;//在原有基础上添加可以用str += ch; 将string类型转换为字符数组char buf[10];string str("ABCDEFG");length = str.copy(buf, 9);buf[le

[utf8编码的byte[]数组转换为String时要注意的问题]

1. 通过socket给Java传递byte[]数组时,utf-8的字节数组在转换为String, Java并不会遇到0就停止结束,而是一直使用完byte[]的容量, 所以在转换为Java的String需要自己判断字节值是0的位置,再截取数组长度. [cpp] view plaincopyprint? public  static int searchByte(byte[] data, byte value) { int size = data.length; for (int i = 0; i

[Java]_[初级]_[utf8编码的byte[]数组转换为String时要注意的问题]

场景: 1. 通过socket给Java传递byte[]数组时,utf-8的字节数组在转换为String, Java并不会遇到0就停止结束,而是一直使用完byte[]的容量, 所以在转换为Java的String需要自己判断字节值是0的位置,再截取数组长度. public static int searchByte(byte[] data, byte value) { int size = data.length; for (int i = 0; i < size; ++i) { if (data

int数组转换为string字符串

将数值数组拼合为字符串,一直使用循环的方式,代码虽简单,但总想更简洁,重构嘛 int[] intArray = new int[] { 1, 2, 3, 4, 5 }; string result = string.Empty; for (int i = 0; i < intArray.Length; i++) { if (!string.IsNullOrEmpty(result)) result += "," + intArray[i]; else result = intAr

Java中char[]数组与String类型的相互转换

String str=akjldjslkjdls"; char[] strToChars; //String 转换成char[] strToChars= str.toCharArray(); //char[] 转换成String str= String.valueOf(strToChars); str=new String(strToChars); 注:这里char[]转换成String时不能直接使用strToChar.toString(),因调用toString()方法实际是调用Object类