특정 자료형 int
,double
등을 문자열의 형태로 만드는 작업은 많이 사용되는 작업이다.
C언어 는 sprintf
라는 함수를 사용하며 사용법은 아래와 같다.
#include<stdio.h> //sprintf
#include<stdlib.h> //EXIT_SUCCESS
int main(){
int a=5;
int b=6;
char buf[256];
sprintf(buf,"a : %d,b : %d",a,b);
puts(buf);
return EXIT_SUCCESS;
}
printf
와 동일하게 사용할 수 있다.
C++ 언어는 stringstream
이라는 클래스가 존재한다.
인터페이스 역시 C에서는 printf
와 같듯이, C++은 cout
과 같다.
#include<iostream> //cout,endl;
#include<sstream> //stringstream
int main() {
int a = 6;
int b = 7;
std::stringstream oss;
oss << "a : " << a << ", b : " << b;
std::cout << oss.str() << std::endl;
return 0;
}
stringstream::str()
이 std::string을 반환하므로, 원한다면 string::c_str()
을 바로 꺼내어 쓸수도 있다!!
==다만!== stringstream ss;
을 초기화 할려면 반드시 ss.str("");
으로 초기화를 해주어야 한다.
ss.clear() , ss.str().clear
로는 초기화가 되지 않는다.
Perl은 C의 영향을 강하게 받아서 sprintf
함수가 존재한다.
차이점은 결과 문자열이, 첫번째 인수가 아닌 반환값으로 주어진다는 점!.
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
my $a=5;
my $b=6;
my $s=sprintf("a : %d,b : %d",$a,$b);
say $s;
Pascal 언어는 뭐 정보찾기가 Lisp 뺨치지만, 그나마 알골계언어라 감으로 익혀가는 중이다.
파스칼역시 좋은 스트링패러다임을 가지고 있다. 이런 포맷 출력은 I/O 함수와 사용법이 같아야 좋다.
writestr
함수로 사용 가능하며, ==built-in== 함수이다.
program sprintf;
var
s:string;
a,b:longint;
begin
a:=4;
b:=5;
writestr(s,'a : ',a,',b : ',b);
writeln(s);
end.
언제부터인가 주로 하는 언어들이 이 4가지가 되었다.....