2012-09-24 5 views
0

안녕하세요 다른 double 값을 기반으로 명명 규칙을 사용하여 함수에서 많은 다른 CSV 파일을 저장하고 싶습니다. for 루프를 사용하고 문자열 값을 전달하여 각 .csv 파일을 다르게 저장합니다. 아래는 내가std :: ostringsteam 및 std :: string 오류가 발생했습니다.

1.1_file.csv 
1.2_file.csv 

것이 원하는 결과를 수행하기 위해 노력하고있어의 예입니다 대신 나는이

를 해결하기 위해 무엇을 할 수 있는지, 여기에
1.1_file.csv 
1.11.2_file.csv 

이 작업 예제 코드 얻을
#include <sstream> 
#include <iomanip> 
#include <cmath> 
#include <iostream> 
#include <vector> 

int main(){ 
    std::string file = "_file.csv"; 
    std::string s; 
    std::ostringstream os; 
    double x; 

    for(int i = 0; i < 10; i++){ 
     x = 0.1 + 0.1 *i; 
     os << std::fixed << std::setprecision(1); 
     os << x; 
     s = os.str(); 
     std::cout<<s+file<<std::endl; 
     s.clear(); 
    } 

    return 0; 
} 
+0

를 뭐죠에 대한 임의 downvote? – pyCthon

답변

1

ostringstream은 루프 반복마다 재설정되지 않으므로 반복 할 때마다 x 만 추가하면됩니다. for의 범위 안에 넣고 os을 각 반복마다 다른 정리 된 개체로 만들거나 내용을 os.str("")으로 다시 설정하십시오.

또한 변수 s은 필요하지 않습니다. 당신은

std::cout << os.str() + file << std::endl; 

할 수있는 그리고 당신은 s 필요하지 않습니다 당신이 문자열의 복사본을 만드는 오버 헤드를 제거 할 수 있습니다.

1

루프가 반복 될 때마다 ostringstream이 추가됩니다. 당신은 그것을 삭제하고 아래와 같이 재사용한다 (의례 : ostringstream 다시 사용하는 방법에 대한 How to reuse an ostringstream?)

#include <sstream> 
#include <iomanip> 
#include <cmath> 
#include <iostream> 
#include <vector> 

int main() { 

    std::string file = "_file.csv"; 
    std::string s; 

    double x; 
    std::ostringstream os; 

    for (int i = 0; i < 10; i++) { 

     x = 0.1 + 0.1 * i; 
     os << std::fixed << std::setprecision(1); 
     os << x; 
     s = os.str(); 
     std::cout << s + file << std::endl; 
     os.clear(); 
     os.str(""); 
    } 

    return 0; 
} 
+0

@SethCarnegie, 아마도, 나는'os'가'for' 루프에 국한되어야 함을 전달하려고했습니다. – Vikdor

+0

오 이런, 당신이 그것을 추가 줄 알았는데. 내 의견을 삭제하겠습니다. –

관련 문제